In order to protect information stored in a database, it is known to store sensitive data encrypted in the database. To access such encrypted data you have to decrypt it, which could only be done by knowing the encryption algorithm and the specific decryption key being used. The access to the decryption keys could be limited to certain users of the database system, and further, different users could be given different access rights.
Specifically, it is advantageous to use a so-called granular security solution for the encryption of databases, instead of building walls around servers or hard drives. In such a solution, which is described in the document WO 97/49211 by the same applicant, a protective layer of encryption is provided around specific sensitive data-items or objects. This prevents outside attacks as well as infiltration from within the server itself. This also allows the system administrator to define which data stored in databases are sensitive and thereby focusing the protection only on the sensitive data, which in turn minimizes the delays or burdens on the system that may occur from other bulk encryption methods.
Most preferably the encryption is made on such a basic level as in the column level of the databases. Encryption of whole files, tables or databases is not so granular, and does thus encrypt even non-sensitive data. It is further possible to assign different encryption keys of the same encryption algorithm to different data columns. With multiple keys in place, intruders are prevented from gaining full access to any database since a different key could protect each column of encrypted data.
In present systems for such granular protection of data, the encryption process is performed within hardware. Using a tamper-proof hardware for protection of the algorithms and the keys results in a strong protection. One purpose of such a system is to provide data elements with different degrees of protection. However, when encrypting small blocks of data, such as individual data records in a database, a hardware encryption device could experience performance problems. Thus, even though granular encryption techniques on data elements in databases provides flexibility on the encryption level, this flexibility is not sufficient for commercial purposes. For example, in a application with increasing amounts of data and/or data processing, it could be of interest to significantly reduce the security level when encrypting for example older data, while maintaining a higher security level when encrypting new data. This would result in increased overall performance. The current solutions do not provide a sufficient flexibility, which forces the operator to invest in additional hardware resources in order to maintain the systems overall performance. Current hardware encryption systems utilizes a tamper-proof hardware device for encrypting the data elements. The hardware device's processing capability is dependent on the device's processor, memory, architecture, etc. The only way, without changing the device's hardware configuration, to increase a system's performance utilizing such a device, is to use simpler encryption algorithms, for instance reduce the key length etc. However, the reduction of encryption security level reaches a level where the used processing power does not decrease proportionally, since the initial overhead for each access to the tamper-proof hardware will still be constant. Therefore, such systems experience a performance problem when faced to increased load and when encryption of data elements requiring lower protection increases.